【Amazon SageMaker】ネットワーク設計パターンをまとめてみた
こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。
今回は、Amazon SageMakerのネットワーク構成をまとめてみようと思います。
なかなかボリュームがあるので、まずは絵からザックリご覧頂くことをオススメします。
Amazon SageMaker Studio notebooksのパターン
以下の3パターンが存在します。
※SageMakerマネジメントコンソール上は1,2のパターンで設定値があります。別のリソースで、2の設計を分岐します。
- パブリックインターネットのみ
- VPC のみ (インターネット接続あり)
- VPC のみ (インターネット接続なし)
パブリックインターネットのみ
SageMaker用アカウントを保有しているアカウント内のInternet Gatewayを使用してAPIに到達する構成です。
自身が保有するVPC内へは、EFSへの通信のみがセキュリティグループで許可されている構成となります。
※ドキュメントを探したものの、Amazon SageMaker ノートブックインスタンスのように、Internet Gateway用のVPCが用意されているかどうか不明だったため、上記のようなニュアンスで図示しています。
VPC のみ (インターネット接続あり)
自身が保有するVPCのNAT Gatewayからインターネットを経由してAPIへ到達する構成になります。
EFS以外にも、VPC内部のリソースと通信可能な構成になります。
VPCエンドポイントを使うと...
アタッチするVPCに、VPCエンドポイントを作成すると「AWS内の通信はプライベート、外部APIはNAT Gatewayを介してインターネット」の構成も取れます。
VPC のみ (インターネット接続なし)
SageMakerノートブックインスタンスは、自身が保有するVPC内のVPCエンドポイントからインターネットを経由せずAPIへ到達する構成になります。
NAT Gatewayを置いていないため、インターネット向け通信が遮断されている構成になります。
Amazon SageMaker ノートブックインスタンスのパターン
以下の4パターン存在します。
※SageMakerマネジメントコンソール上は1,2,3のパターンで設定値があります。別のリソースで、3の設計を分岐します。
- 非VPC
- VPC のアタッチあり (直接インターネット接続あり)
- VPC のアタッチあり (直接インターネット接続なし)
- VPC のアタッチあり (直接インターネット接続なし、インターネット接続なし)
非VPC
VPCをアタッチしないデフォルトの構成です。
SageMakerノートブックインスタンスは、サービスアカウント内の送信用VPCからインターネットを経由してAPIへ到達する構成になります。
VPC のアタッチあり (直接インターネット接続あり)
VPCをアタッチする構成です。
SageMakerノートブックインスタンスは、サービスアカウント内の送信用VPCからインターネットを経由してAPIへ到達する構成になります。
アタッチするVPC内にENIを作成し、VPC内のリソース(EFS)へ通信するために使用します。
VPCエンドポイントを使うと...
アタッチするVPCに、VPCエンドポイントを作成すると「AWS内の通信はプライベート、外部APIはインターネット」の構成も取れます。
VPC のアタッチあり (直接インターネット接続なし)
VPCをアタッチする構成です。
SageMakerノートブックインスタンスは、アタッチするVPC内のNAT Gatewayからインターネットを経由してAPIへ到達する構成になります。
このパターンもアタッチするVPC内にENIを作成し、VPC内のリソース(EFS)へ通信が可能な構成になります。
VPCエンドポイントを使うと...
アタッチするVPCに、VPCエンドポイントを作成すると「AWS内の通信はプライベート、外部APIはNAT Gatewayを介してインターネット」の構成も取れます。
VPC のアタッチあり (直接インターネット接続なし、インターネット接続なし)
VPCをアタッチする構成です。
SageMakerノートブックインスタンスは、アタッチするVPC内のVPCエンドポイントからインターネットを経由せずAPIへ到達する構成になります。
NAT Gatewayを置いていないため、インターネット向け通信が遮断されている構成になります。
番外編
NAT Gatewayを省略してインターネットへ到達できないの?
結論、できませんでした。
何をしたいのかというと、以下のように、NAT Gatewayを省略することはできないかやってみました。
はじめに、パブリックIPアドレスを割り当てるため、サブネットに自動パブリックIP割り当ての有効化を行いました。
しかし、ENIにはパブリックIPは割り当てられませんでした。
ならばと、Elastic IPをENIに割り当てようとしたところ、「You do not have permission to access the specified resource」と怒られてしまいました...
ドキュメントにもしっかり明記してあったので載せておきます。
インターネットアクセスを許可する場合は、インターネットゲートウェイなどを経由してインターネットにアクセスできる NAT ゲートウェイを使用する必要があります。
接続SageMakerVPC 内の Studio ノートブックから外部リソースへより引用
Network Firewallを置いた構成
今回の記事を作成する上で、Network Firewallとの組み合わせも大変魅力的だったためご紹介します。
紹介した構成に加え、サブネットルートテーブルに「VPC More Specific Routing」を設定することで、Network FirewallのFirewall Endpointから見て、送信元IPがNAT Gatewayに集約される問題を防げます。
Network Firewallや、VPC More Specific Routingについてより知りたい方は、以下ブログもご参考にしていただけますと幸いです。
Transit GatewayでVPCエンドポイントを集約
構成によっては、今回まとめた構成よりも多くのVPCエンドポイントを作成する場合もあります。
VPCエンドポイント用のVPCを作成し、Transit GatewayでVPCをシェアすることで、VPCエンドポイントをVPCごとに作る必要がなくなります。
以下、具体的な設計方法などは以下ブログをご参照ください。
参考
Connect SageMaker Studio Notebooks in a VPC to External Resources
Connect a Notebook Instance in a VPC to External Resources
AWS で安全なエンタープライズ機械学習プラットフォームを構築する
Amazon SageMaker ノートブックインスタンスのネットワーク設定と高度なルーティングオプションについて理解する
Secure Data Science with Amazon SageMaker Studio Workshop
Securing Amazon SageMaker Studio internet traffic using AWS Network Firewall
[Sagemaker]ノートブックインスタンスのネットワーク構成について特徴とユースケースをまとめてみた
まとめ
以上、「Amazon SageMakerのネットワーク構成まとめてみた」でした。
なかなかボリュームがあって、多くのパターンがあるんだなと思っていただければ幸いです。
「コレだ!」という設計が見つかれば嬉しいです。
以上、AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!